package studystat;

import java.util.List;



/**
 * Een klasse die een abstractie is van een bepaalde doelstelling die door de gebruiker moet gehaald worden om een bepaalde achievement
 * te krijgen. Deze klasse kijkt na aan de hand van de activiteitenlijst van de Student of hij deze doelstelling behaald heeft en dus 
 * in aanmerking komt voor de achievement waar deze doelstelling in opgenomen is (een achievement kan 1 of meerdere doelstellingen hebben).
 * @author CWB4
 *
 */
public abstract class Conditie{
	// Elke doelstelling heeft een naam
	private String naam;
	// In de doelstelling wordt voor de gebruiker duidelijk gemaakt wat deze doelstelling juist inhoudt.
	private String samenvatting;
	
	/**
	 * Deze constructor van deze klasse vereist enkel de naam als parameter, de rest moet achteraf ingesteld worden.
	 * @param naam De naam van de doelstelling.
	 */
	public Conditie(String naam) {
		this.setNaam(naam);
		this.setSamenvatting("");
	}
	
	/**
	 * Maak een nieuwe doelstelling aan met een naam en een samenvatting
	 * @param naam	De naam van de doelstelling
	 * @param samenvatting	Een korte samenvatting van de doelstelling
	 */
	public Conditie(String naam, String samenvatting) {
		this.setNaam(naam);
		this.setSamenvatting(samenvatting);
	}
	
	/**
	 * Om na te kijken of de huidige doelstelling voldaan is
	 * @param activiteiten	Een lijst met activiteiten waarmee wordt nagekijken of aan de doelstelling voldaan is
	 * @return True als aan de doelstelling voldaan is, anders false
	 */
	abstract boolean isVoldaan(List<Activiteit> activiteiten);

	/**
	 * @return naam
	 */
	public String getNaam() {
		return naam;
	}

	/**
	 * @param naam De nieuwe naam
	 */
	public void setNaam(String naam) {
		this.naam = naam;
	}

	/**
	 * @return samenvatting
	 */
	public String getSamenvatting() {
		return samenvatting;
	}

	/**
	 * @param samenvatting De nieuwe samenvatting van de doelstelling
	 */
	public void setSamenvatting(String samenvatting) {
		this.samenvatting = samenvatting;
	}

	
}
